package com.sx.sx1.lintcode.day717;

public class LC1225 {

    static class Solution {
        /**
         * @param grid: a 2D array
         * @return: the perimeter of the island
         */
        public int islandPerimeter(int[][] grid) {
            int ans =0;
            int n= grid.length;
            int m = grid[0].length;
            for (int r = 0; r <n ; r++) {
                for (int c = 0; c <m ; c++) {
                    if(grid[r][c] ==1) {
                        if(r ==0 || grid[r-1][c] ==0) ans++;
                        if(r==n-1 || grid[r+1][c] ==0) ans++;
                        if(c ==0 || grid[r][c-1]==0) ans++;
                        if(c==m-1 || grid[r][c+1] ==0) ans++;
                    }
                }
            }
            return ans;
        }
    }


    public static void main(String[] args) {
        System.out.println(new Solution().islandPerimeter(new int[][]
                {{0,1,0,0},
                        {1,1,1,0},
                        {0,1,0,0},
                        {1,1,0,0}}));
    }
}

/*
LintCode-Logo
搜索题目、标签、题集
中文
avatar
您有205条未读消息，请及时查看
1225 · 岛的周长
算法
简单
通过率
70%

题目
题解28
笔记
讨论47
排名
记录
描述
给定一张用二维数组表示的网格地图，其中1表示陆地单元格，0表示水域单元格。网格地图中的单元格视为水平/垂直相连（斜向不相连）。这个网格地图四周完全被水域包围着，并且其中有且仅有一个岛（定义为一块或多块相连的陆地单元格）。这个岛不包含湖（定义为不和外围水域相连的水域单元格）。一个地图单元格是边长为1的一个正方形；网格地图是一个矩形，并且它的长和宽不超过100。你要做的是求出这个岛的周长。

最短时间刷“透”算法面试：《66页算法宝典》.pdf

微信添加【jiuzhangfeifei】备注【66】领取


样例
[[0,1,0,0],
 [1,1,1,0],
 [0,1,0,0],
 [1,1,0,0]]

答案：16
说明：岛的边界为下图中被标为黄色的边，其周长为16：
图片

标签
企业
Google
相关题目

1062
洪水填充
简单

1080
最大的岛
简单
推荐课程

系统设计 System Design 2024版
数据库、API、GFS、视频流等16大系统设计详解，实战练习拿下面试/晋升“拦路虎”
750/1858
已开启智能提示
发起考试
15 分 00 秒
123456789

控制台
        历史提交

 */